package com.fh.web.service;

import java.util.List;
import java.util.Map;

import com.fh.bo.PageFilterBo;
import com.fh.dto.PubDdv;
import com.fh.dto.PurRole;
import com.fh.web.vo.PurRoleVo;

/**
 * 角色管理的service接口
 * 
 * @author admin
 *
 */
public interface PurRoleService {
	/**
	 * 根据id查询角色
	 * 
	 * @param id
	 * @return
	 * @throws Exception
	 */
	PurRoleVo selectRoleById(Long id) throws Exception;

	/**
	 * 查询所有角色
	 * 
	 * @param pageBounds
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> selectAllRole(PageFilterBo pageBounds) throws Exception;

	/**
	 * 根据id删除角色
	 * 
	 * @param id
	 * @throws Exception
	 */
	void deleteRoleById(Long id) throws Exception;

	/**
	 * 根据id检查角色下是否存在用户
	 * 
	 * @param id
	 * @throws Exception
	 */
	boolean isExistUser(Long id) throws Exception;

	/**
	 * 更新角色信息
	 * 
	 * @param id
	 * @throws Exception
	 */
	void updateRole(PurRole roleDto) throws Exception;

	/**
	 * 添加角色
	 * 
	 * @param roleDto
	 * @throws Exception
	 */
	void addRole(PurRoleVo roleDto, Integer id) throws Exception;

	/**
	 * 查询所有角色
	 * 
	 * @return
	 * @throws Exception
	 */
	List<PurRoleVo> selectRoles() throws Exception;

	/**
	 * 删除用户权限
	 * 
	 * @return
	 */
	void deleteUserRoleByUserId(Long id) throws Exception;

	/**
	 * 检查角色名称是否已经存在
	 * 
	 * @return
	 */
	int checkRole(PurRoleVo purRoleVo);

	/**
	 * 查询所有角色
	 * 
	 * @return
	 */
	List<PubDdv> getRoleType();

	/**
	 * 查询所有菜单类型
	 * 
	 * @return
	 */
	List<PubDdv> getPurType();

}
